using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace QldtSdh.DAL.Models.Mapping
{
	public class KeHoachDaoTaoMap : EntityTypeConfiguration<KeHoachDaoTao>
	{
		public KeHoachDaoTaoMap()
		{
			// Khoá chính
			this.HasKey(t => new { t.MaLopKhoaNganhGUID, t.MaHocKyGUID, t.MaHocPhanGUID });

			// Các cột
			this.Property(t => t.MaLopKhoaNganhGUID)
				.IsRequired()
                .HasMaxLength(50);

			this.Property(t => t.MaHocKyGUID)
				.IsRequired()
                .HasMaxLength(50);

			this.Property(t => t.MaHocPhanGUID)
				.IsRequired()
                .HasMaxLength(50);

			// Ánh xạ Property của POCO vào Column của Table
			this.ToTable("KeHoachDaoTao");
			this.Property(t => t.MaLopKhoaNganhGUID).HasColumnName("MaLopKhoaNganhGUID");
			this.Property(t => t.MaHocKyGUID).HasColumnName("MaHocKyGUID");
			this.Property(t => t.MaHocPhanGUID).HasColumnName("MaHocPhanGUID");

			// Các quan hệ
			this.HasRequired(t => t.HocKy)
				.WithMany(t => t.ListKeHoachDaoTao)
				.HasForeignKey(d => d.MaHocKyGUID);
			this.HasRequired(t => t.HocPhan)
				.WithMany(t => t.ListKeHoachDaoTao)
				.HasForeignKey(d => d.MaHocPhanGUID);
			this.HasRequired(t => t.LopKhoaNganh)
				.WithMany(t => t.ListKeHoachDaoTao)
				.HasForeignKey(d => d.MaLopKhoaNganhGUID);

		}
	}
}
